package com.szh.zx.java8.day01;

import java.util.Comparator;
import java.util.function.Consumer;

/**
 * Lambda 表示
 */
public class TestLamdba2 {
	
		// 无参数，无返回值 形式
public 	void test1() {
		// 在jdk1.7之前，内部类使用外部变量，该变量必须是常量，1.8之后则没了.是一个常量
		int num = 1;
		Runnable runnable = new Runnable() {
			@Override
			public void run() {
				System.out.println("hello word" + num);
			}
		};

		System.out.println("------------------");
		Runnable runnable1 = () -> System.out.println("hello 无参数 无返回值");
		runnable1.run();


	}

	// 语法格式二: 有一个参数，无返回值
	
	public void test2() {
		Consumer<String> consumer = System.out::println;
		consumer.accept("是顶级so");
	}

	// 语法格式三：剪头左侧如果只有一个参数，小括号可以不写
	
	public void test3() {
		Consumer<String> consumer = x -> System.out.println(x);
		consumer.accept("是顶级so");
	}

	// 语法格式四：有多个参数，并且 lambda 体中有多条语句，必须有大括号
	
	public void test4() {
		Comparator<Integer> comparable = (x, y) -> {
			System.out.println("函数式接口");
			return Integer.compare(x, y);
		};

	}

	// 语法格式5：如果有多个参数，并且lambda 体有返回值，且只有一条语句
	
	public void test5() {
		Comparator<Integer> comparable = (x, y) -> Integer.compare(x, y);
	}
	// 语法格式6：类型推断

}
